/*
Rilego - An easy Images 2 E-Book converter.
Copyright (C) 2011  Federico Improta (Kirys)

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 */
package it.kirys.rilego.gui.filtersmanager.nodesmanaging;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.LinkedList;
import javax.swing.JCheckBox;

/**
 *
 ** @author Federico Improta
 */
public class BooleanLeafEditor extends JCheckBox implements IVisualLeafEditor {

	LinkedList<ValueChangedEventListener> listeners;
	IEditableTreeLeaf leaf;
	@Override
	public void setLeaf(IEditableTreeLeaf leaf) {
		this.leaf = leaf;
	}

	@Override
	public IEditableTreeLeaf getLeaf() {
		return this.leaf;
	}
	@Override
	public Object getValue() {
		return Boolean.valueOf(this.isSelected());
	}//public Object getValue()

	@Override
	public void setValue(Object aValue) {
		if (aValue instanceof Boolean) {
			Boolean b = ((Boolean) aValue);
			this.setSelected(b.booleanValue());
		}
	}//public void setValue(Object aValue)

	@Override
	public void addListener(ValueChangedEventListener listener) {
		listeners.add(listener);
	}

	private void init() {
		listeners = new LinkedList<ValueChangedEventListener>();
		ItemListener il = new ItemListener() {

			@Override
			public void itemStateChanged(ItemEvent itemEvent) {
				for (ValueChangedEventListener li : listeners) {
					li.valueChanged(leaf);
				}

			}
		};
		this.addItemListener(il);

	}

	public BooleanLeafEditor() {
		super();
		init();
	}
}
